If this is a first time you visiting Scrolls, please register in Fight Club. If you already registered, please authorize on Fight Club start page with your login and password.
06-06-08 @ 04:43 grand lucifer Немного о DoS и DDoS!!!!читать ненада!!!<<!!!>>>
Как вы уже, наверное, знаете DoS - это атака на отказ в обслуживании (DoS -- Denial of Service). Непосредственно к DDoS мы вернемся немного позже. Как известно, такого рода атаки осуществляются путем засорения канала жертвы пакетами определенного типа, что отправляет жертву в глубокую кому. Думаю, объяснять, для чего используют подобного рода атаки бессмысленно, поэтому идём дальше.
Дос досу рознь
Такие атаки можно проводить двумя известными способами. Первый заключается в использовании уязвимостей жертвы. При помощи специально сформированного пакета реализуется нехитрое переполнение буфера, и жертва улетает в астрал.
Второй и более распространенный - это отправка большого количества определенным образом построенных сетевых пакетов. То есть, грубо говоря, флуд. При этом надо уяснить для себя, что совсем не обязательно придумывать самому какую-то особую реализацию сетевого пакета. С такой же степенью поражения достаточно просто «забомбить» сервер стандартными запросами.
Тут самое время вспомнить сетевую утилиту Sprut, которая была разработана для системных администраторов, желающих проверить свой сервер к устойчивости на банальный HTTP GET DoS. За каждую секунду, по нарастающей, программа подключается к указанному серверу до тех пор, пока сервер не начнет посылать ее куда подальше. Это означает достижение комового состояния, либо то, что сервер использует грамотную реализацию защиты от подобных атак.
Вся хитрость такого флуда заключается в следующем. Допустим, мы посылаем несколько пакетов серверу с бесконечно малым интервалом времени между ними, то есть друг за другом. Пока сервак шаманит над первым пакетом, остальные помещаются им в буфер. Соответственно, чем больше таких пакетов, тем больше памяти занимает буфер для их хранения. Исхода тут два. Первый и самый распространенный заключается в том, что наступит момент, когда буфер сожрет все доступные системные ресурсы, тем самым замедлит работу сервера, а то и вовсе остановит его. Результат налицо: сервак в дауне и не отвечает на запросы. Есть, конечно, и второй вариант, при котором произойдет переполнение, вызывающее критический сбой системы. И тут уже потребуется перезагружать сервер вручную. Второй вариант, разумеется, более продуктивен для нас .
Однако не все такие глупые, поэтому зачастую для завершения атаки требуется поддерживать постоянный DoS-поток, поскольку, как только стрим левых запросов исчезнет, сервер вновь начнет обслуживать клиентов.
Так как же бомбить?
Прошли те времена, когда любой сервант можно было заддосить простейшим ping'ом с нескольких компьютеров. В принципе, такие времена и не начинались: когда каналы были для этого достаточно узкими, никому и в голову не приходило заниматься подобной ахинеей.
Можно также вспомнить баги в популярном софте, заюзав которые можно было легко зафлудить какого-нибудь домашнего пользователя. К примеру, несколько лет назад можно легко было задосить icq-пользователя, прислав ему в офлайн несколько тысяч смайликов.
SYN-наводнение
Наиболее простым способом проведения DoS-атак является SYN-наводнение. Происходит это по следующей схеме. Атакующий компьютер посылает SYN-пакет жертве и, соответственно, получает обратно SYN/ACK-пакет. Если атакующий подтвердит ACK-пакетом факт получения ответа, то машины посчитают, что соединение установлено. Однако если атакующий не будет подтверждать этот факт, а продолжит постоянно передавать SYN-пакет на соединение, то запись о незавершенной процедуре подключения будет добавлена в буфер жертвы до истечения тайм-аута ответа. Когда в буфере накопится достаточное количество запросов, произойдет переполнение. После этого жертва перестанет отвечать на пользовательские запросы. Вот, собственно, и вся схема атаки. Чтобы не быть голословным, приведём пример заголовка пакета при данной атаке:
Аналогичные примеры разбросаны по всему Интернету. Обратите внимание на fragment_off, то есть на смещение фрагмента. В некоторых случаях использование длинных пакетов с большой фрагментацией дает желаемый результат намного быстрее приведенного метода.
Вот еще хороший пример атаки. Нам потребуются, как минимум, два компьютера . Мы посылаем пакет на порт 7 (echo) атакуемого хоста. При этом надо подменить адрес отправителя, который будет указывать у нас на порт 19 (chargen) другого хоста. Между двумя хостами произойдет процесс передачи информации постоянным потоком. То есть пакет, как феерический заяц-забегаец, начнет прыгать от одного хоста к другому, переключая все внимание серверов на себя. Таким образом, они буквально забомбят себя до состояния вантуза. Как итог — отказ в обслуживании.
Вспомним про фрагментацию пакета. Так вот, такой вид атаки принято называть ICMP flood, и он заключается в посылке больших (64Кб), сильно фрагментированных пакетов. Обслуживание таких данных очень напрягает сервер, и он решает, что лучше уйти на покой. На сегодняшний день такими технологиями, конечно, пользуются, но редко. Это уже DDoS - распределенная атака на отказ в обслуживании. Чтобы провести такую пакость, потребуется усиливающая сеть, даже не обязательно потрояненная вами. В этом-то самое сильное и заключается. Допустим: есть у нас жертва и миллионы пользователей Интернета. Что будет, если этим миллионам пользователей послать echo-пакет от имени атакуемого хоста? Правильно, они ответят этому хосту. Все вместе. Сразу. Думаю, хосту будет легче застрелиться, чем получать эти ответы. Что, собственно, в результате с ним и произойдет.
Сокеты сокетам рознь
Долгое время поддержка RAW Sockets - "сырых сокетов" - была реализована только в дистрибутивах UNIX. Сырые сокеты представляют большой интерес для тех, кто занимается досом: слово "сырые" здесь указывает на дополнительные низкоуровневые возможности разработки сетевых приложений. Программисту становятся доступными масса вещей, вроде подмены информации в пакете, изменения адреса отправителя в пакетах более высокоуровневых протоколов.
Конечно, и раньше такое проделывали. Но то были умы, подобно тем, что сейчас изучают недокументированные функции систем, копаются в ядре. Теперь же работа с сырыми сокетами стала всеобщим достоянием, и пользуются, как показывает практика, по большей части ей именно представители сетевого андеграунда.